在Phone Gap中通过Ajax实现java JSON效果不佳
我的phonegap项目有问题,这段代码在web浏览器上运行良好,但在安卓 emulator中没有。在emulator中,总是收到“Gagal”(失败消息),这有什么问题
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Loading data into a PhoneGap app</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
</head>
<body>
<ul id="your-tweets"></ul>
<script>
$(document).ready(function(){
$.ajax({
url: 'http://127.0.0.1/json.php',
dataType: 'jsonp',
jsonp: 'jsoncallback',
timeout: 5000,
success: function(data, status){
$('#your-tweets').append('<li>Sukses</li>');
},
error: function(){
$('#your-tweets').append('<li>Gagal</li>');
}
});
});
</script>
</body>
</html>
# 1 楼答案
ajax帖子中的url错误。您指的是127.0.0.1,它是手机本身的localhost。可能重复this其他堆栈溢出问题
你的答案是here
# 2 楼答案
127.0.0.1始终指向手机本身,并确保您没有在手机上运行服务器。因此,请将IP地址更改为运行服务器的系统。这肯定会奏效的
# 3 楼答案
首先,您正在尝试在不需要时使用}完全不同的通信方法^当请求完成时,{}将返回对您指定的函数的调用(在本例中为
JSONP
JSONP
是一种与{jsoncallback
),其中asJSON
将只返回一个可以解析的数据字符串JSONP
通过在内容主体中添加<script>
字段来工作,其中asJSON
通过使用浏览器AJAX
请求功能来工作您还试图访问本地主机上的web服务器。当然,如果您访问与您尝试访问的服务器位于同一台机器上的浏览器上的页面,但在emulator上,您需要通过网络上的特定IP访问服务器,那么这将起作用
尝试使用以下任一方法获取服务器的IP:
。。如果是Windows或
。。如果是Linux
使用为以太网适配器或WiFi适配器指定的IP地址,具体取决于您当前使用的适配器
我不确定这是否有效,因为我相信Android模拟器实际上并没有连接到您的网络,而是通过某种NAT或桥接连接到您当前的网络连接
如果您的服务托管在实际的INTERNET IP地址上,那么您可以使用该地址
注意:为了在您访问的主机以外的主机上使用AJAX,您可能需要在
res/xml/cordova.xml
文件中提供一个白名单,如here所述